<?php

namespace app\common\controller;

use think\Controller;

class Admin extends Controller{
    public function __construct()
    {
        //继承分类
        parent::__construct();

        $AutoLogin = cookie('AutoLogin') ? cookie('AutoLogin') : '';
        $Login = session('?LoginUser') ? json_decode(session('LoginUser'), true) : [];

        if (!empty($AutoLogin)) {
            //有勾选自动登录
            $list = model('Admin')->where(['state' => 1])->select();

            //找到的人
            $auto = [];

            foreach ($list as $item) {
                $AutoSalt = md5($item['id'] . $item['username']);

                //如果相等说明 找到了自动登录的那个人
                if ($AutoSalt == $AutoLogin) {
                    $auto = $item;
                    break;
                }
            }

            //为空说明没找到自动登录的人
            if (empty($auto)) {
                //删除cookie
                cookie('AutoLogin', null);
            } else {
                //不为空说明找到了自动登录的人
                $result = login($auto);

                if ($result) {
                    $this->LoginUser = $auto;
                    $this->view->assign('LoginUser', $this->LoginUser);
                } else {
                    //登录失败
                    cookie('AutoLogin', null);
                    session(null);
                    $this->error('登录失败', url('admin/index/login'));
                    exit;
                }
            }
        } else {
            //没有勾选自动登录
            if (empty($Login)) {
                $this->error('请先登录', url('admin/index/login'));
                exit;
            }

            //判断管理员id 是否为空
            $adminid = (isset($Login['id']) && !empty($Login['id'])) ? $Login['id'] : 0;

            //查询用户是否存在
            $this->LoginUser = model('Admin')->find($adminid);

            if (!$this->LoginUser) {
                //伪造的session要删除,清除全部session
                session(null);
                $this->error('非法登录', url('admin/index/login'));
                exit;
            }

            $this->view->assign('LoginUser', $this->LoginUser);
        }
    }
}
